package com.jy.api.misc.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.jy.framework.base.utils.Serializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * @Auther: wxr
 * @Date: 2022/6/6 16
 * @Description:
 */
@ApiModel("质控方案配置")
@Getter
@Setter
public class FangAnPZDto {
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

    @ApiModelProperty("数据集标识符")
    private String shuJuJBSF;

    @ApiModelProperty("准确性权重")
    @NotNull(message = "准确性权重不能为空")
    @Min(value = 0, message = "准确性权重不能低于0")
    @Max(value = 100, message = "准确性权重不能高于0")
    private Integer zhunQueXQZ;

    @ApiModelProperty("完整性权重")
    @NotNull(message = "完整性权重不能为空")
    @Min(value = 0, message = "完整性权重不能低于0")
    @Max(value = 100, message = "完整性权重不能高于0")
    private Integer wanZhengXQZ;

    @ApiModelProperty("稳定性权重")
    @NotNull(message = "稳定性权重不能为空")
    @Min(value = 0, message = "稳定性权重不能低于0")
    @Max(value = 100, message = "稳定性权重不能高于0")
    private Integer wenDingXQZ;

    @ApiModelProperty("及时性权重")
    @NotNull(message = "及时性权重不能为空")
    @Min(value = 0, message = "及时性权重不能低于0")
    @Max(value = 100, message = "及时性权重不能高于0")
    private Integer jiShiXQZ;

    @ApiModelProperty("关联性权重")
    @NotNull(message = "关联性权重不能为空")
    @Min(value = 0, message = "关联性权重不能低于0")
    @Max(value = 100, message = "关联性权重不能高于0")
    private Integer guanLianXQZ;

    @ApiModelProperty("开启准确性方案")
    @NotNull(message = "准确性方案开关不能为空")
    private Boolean kaiQiZQXFA;

    @ApiModelProperty("符合准确性评价的数据项得分")
    @NotNull(message = "符合准确性评价的数据项得分不能为空")
    private Integer zhunQueXPFFHDF;

    @ApiModelProperty("不符合准确性评价的数据项得分")
    @NotNull(message = "不符合准确性评价的数据项得分不能为空")
    private Integer zhunQueXPFBFHDF;

    @ApiModelProperty("准确性指标级别重传 等级1 数据无法使用，必须重传")
    @NotBlank(message = "准确性指标级别1不能为空")
    private String zhunQueXZBJBCC;

    @ApiModelProperty("准确性指标级别校验 等级2 数据可以使用，但需要校验")
    @NotBlank(message = "准确性指标级别2不能为空")
    private String zhunQueXZBJBXYJY;

    @ApiModelProperty("准确性指标级别不校验 等级3 数据可以使用，不要求校验")
    @NotBlank(message = "准确性指标级别3不能为空")
    private String zhunQueXZBJBBJY;

    @ApiModelProperty("开启完整性方案")
    @NotNull(message = "完整性方案开关不能为空")
    private Boolean kaiQiWZXFA;

    @ApiModelProperty("完整性评价范围 1全部数据项 2必填数据项")
    @NotBlank(message = "完整性评价范围不能为空")
    private String wanZhengXPJFW;

    @ApiModelProperty("开启稳定性方案")
    @NotNull(message = "稳定性方案开关不能为空")
    private Boolean kaiQiWDXFA;

    @ApiModelProperty("稳定性计算公式 json字符串")
    private String wenDingXJSGS;

    @ApiModelProperty("开启及时性方案")
    @NotNull(message = "及时性方案开关不能为空")
    private Boolean kaiQiJSXFA;

    @ApiModelProperty("及时性计算公式 json字符串")
    private String jiShiXJSGS;

    @ApiModelProperty("开启关联性方案")
    @NotNull(message = "关联性方案开关不能为空")
    private Boolean kaiQiGLXFA;

    @ApiModelProperty("有关联数据得分")
    @NotBlank(message = "有关联数据得分不能为空")
    private Integer guanLianSJDF;

    @ApiModelProperty("无关联数据得分")
    @NotBlank(message = "无关联数据得分不能为空")
    private Integer wuGuanLianSJDF;

    @ApiModelProperty("关联性时效")
    private Integer guanLianXSX;

    @ApiModelProperty("关联性计算公式 json字符串")
    private String guanLianXJSGS;

    private Integer zuoFeiBZ;

    private Date chuangJianSJ;

    private Date xiuGaiSJ;

    public List<GuanLianXSJJDto> guanLianXJSGSList() {
        if (guanLianXJSGS == null || "".equals(guanLianXJSGS)) {
            return null;
        }
        return Serializer.deserializeArray(guanLianXJSGS, GuanLianXSJJDto.class);
    }
}
